'use strict';
/**
 * Created by QianQi on 2017/3/9.
 */
$(function(){
    var oHideParams= $.getHideParams(),// <body> 下隐藏域键值对，name 为键
        oUrlParams= $.getUrlParams();// url 附加参数键值对
    var URLS={
        d_tree:'demo1.json'// 树数据源
    };
    var jqTree=$('.js-tree');
    var oZTreeApi;// 树组件 api
    // 移入树节点触发事件，显示操作按钮
    var treeAddHoverDom=function(treeId, node){
        var jqNodeA,jqCtrl;
        if (node.editNameFlag) return;
        jqNodeA = jqTree.find("#" + node.tId + "_a");
        jqCtrl=jqNodeA.find('.ztreectrl');
        if(!jqCtrl.length){
            jqNodeA.append('<div class="ztreectrls" data-tid="' + node.tId + '">' +
                '<span class="ztreectrl ztreectrl-edit" data-type="edit" title="修改"></span>' +
                '<span class="ztreectrl ztreectrl-add" data-type="add" title="新增"></span>' +
                '<span class="ztreectrl ztreectrl-del" data-type="del" title="删除"></span>' +
                '</div>');
        }
    };
    // 移出树节点触发事件，移除操作按钮
    var treeRemoveHoverDom=function(treeId, node) {
        jqTree.find("#" + node.tId +'_a>.ztreectrls').remove();
    };
    // 用于筛选可选择的节点，返回 true 时允许选择
    var fSelector=function(node){
        return node['level']!=1;
    };
    // 树节点点击事件
    var onTreeNodeClick=function(event, treeId, node){
        console.log('点击了节点:',node);
    };
    // ztreectrl 点击事件
    var fOnTreeCtrlClick=function(e){
        var jqCur=$(this),
            sTId=jqCur.parent().attr('data-tid'),
            oNode=oZTreeApi.getNodeById(sTId);// 当前树节点数据
        switch(jqCur.attr('data-type')){
            case 'edit':
                console.log('edit',oNode);
                break;
            case 'add':
                console.log('add',oNode);
                break;
            case 'del':
                console.log('del',oNode);
                break;
        }
        //e.stopPropagation();// 点击操作按钮时，若需拦截节点点击事件，此句必须
    };
    /** =================== **/
    oZTreeApi=jqTree.initZTree({
        url:URLS['d_tree'],
        urlArgs:{},
        key:{
            //checked:'checked',// 标识是否选中的字段
            //children:'children',// 子节点集合字段
            name:'groupname'// 显示字段
        },
        multi:true,// 多选
        selector:fSelector,// 用于筛选可选择的节点
        filterEl:$('.js-treefilter'),// 用于过滤的输入框
        filter:{
            fields:['groupname','id'],// 参与过滤的字段，只有一个时可以传入字符串
            pySupport:false,// 是否过滤拼音首字母
            hide:false// 是否隐藏不符合过滤条件的节点
        },
        view:{
            //showIcon:true,
            //showLine:true,
            addHoverDom:treeAddHoverDom,
            removeHoverDom:treeRemoveHoverDom
        },
        callback:{
            onClick:onTreeNodeClick
        }
    });
    // 绑定树节点操作按钮事件
    jqTree.on('click.ctrl','.ztreectrl',fOnTreeCtrlClick);
});